/**
  ******************************************************************************
  * @file    Memory_cfg.h
  * @author  tuancheng_Zero
  * @version V0.1
  * @date    09/02/2024
  * @brief   memory cfg file 
  ******************************************************************************
*/ 
#ifndef  __MEMORY_CFG_H__
#define  __MEMORY_CFG_H__
#ifdef __cplusplus
extern "C" {
#endif

#include "includes.h"

#define MemCfg_DataType_Integer         1   // 整型
#define MemCfg_Datatype_Float           2   // 浮点型
#define MemCfg_Datatype_String          3   // 字符型

#define MemCfg_Permission_RW            1   // 读写
#define MemCfg_Permission_R             2   // 仅读
#define MemCfg_Permission_W             3   // 仅写

#define MemCfg_RangLimit_OFF            1   // 无范围限制
#define MemCfg_RangLimit_ON             2   // 有范围限制

#define MemCfg_Base_ItemNum             15
#define MemCfg_Nominal_ItemNum          16
#define MemCfg_SeriousAlarm_ItemNum     16
#define MemCfg_PidDebug_ItemNum         24
#define MemCfg_MotorSwitch_ItemNum      19
#define MemCfg_F_BackClosing_ItemNum    2
#define MemCfg_EstaMagn_ItemNum         9
#define MemCfg_Volatility_ItemNum       5
#define MemCfg_CeilingExci_ItemNum      7
#define MemCfg_UnderFreq_ItemNum        7
#define MemCfg_StartStop_ItemNum        8
#define MemCfg_SyncClosing_ItemNum      6
#define MemCfg_P100Upload_ItemNum       10
#define MemCfg_P60Upload_ItemNum        10
#define MemCfg_C60Upload_ItemNum        10
#define MemCfg_SuddenUnload_ItemNum     3
#define MemCfg_CliaFactor_ItemNum       22
#define MemCfg_LoadEquCfg_ItemNum       11

#define MemTmp_DeviceControl_ItemNum    9
#define MemTmp_ProcParameter_ItemNum    6

typedef struct{
    uint16_t  Addr;             // 地址
    uint8_t   datalen;          // 数据长度
    uint8_t   dataType;         // 数据类型
    uint8_t   permission;       // 访问权限
    uint8_t   rangLimit;        // 范围限制
    uint32_t  minValue_I;       // 整型最小值
    uint32_t  maxValue_I;       // 整型最大值
    float32_t minValue_F;       // 浮点最小值
    float32_t maxValue_F;       // 浮点最大致
}MemoryDataCheck_ST;

typedef struct{
    uint16_t itemNumber;        // 条目数量
    MemoryDataCheck_ST checkData_st[];
}MemoryOperateCheck_ST;

// 基础参数限制
#define MemBaseCheckTable {\
    MemCfg_Base_ItemNum,\
    {{0x0000,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_R,      MemCfg_RangLimit_ON,     0,    256,   0.0,    0.0},\
     {0x0001,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    3,     0.0,    0.0},\
     {0x0002,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    4,     0.0,    0.0},\
     {0x0003,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    3,     0.0,    0.0},\
     {0x0004,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    3,     0.0,    0.0},\
     {0x0005,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    30,    0.0,    0.0},\
     {0x0006,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,    0,    0,     0.0,    0.0},\
     {0x0007,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,    0,    0,     0.0,    0.0},\
     {0x0008,   4,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,    0,    0,     0.0,    0.0},\
     {0x000A,   30,   MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,    0,    0,     0.0,    0.0},\
     {0x0019,   20,   MemCfg_Datatype_String,     MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,    0,    0,     0.0,    0.0},\
     {0x0023,   50,   MemCfg_Datatype_String,     MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,    0,    0,     0.0,    0.0},\
     {0x003C,   2,    MemCfg_Datatype_String,     MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,    0,    0,     0.0,    0.0},\
     {0x003D,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,     0.0,    2.0},\
     {0x003F,   0,    0,                          0,                        0,                       0,    0,     0.0,    0.0}},\
}

// 额定参数限制
#define MemNominalCheckTable {\
    MemCfg_Nominal_ItemNum,\
    {{0x0100,   4,    MemCfg_Datatype_Float,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,     50.0,     12000.0},\
     {0x0102,   4,    MemCfg_Datatype_Float,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,     30.0,    20000.0},\
     {0x0104,   4,    MemCfg_Datatype_Float,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,     50.0,     500.0},\
     {0x0106,   4,    MemCfg_Datatype_Float,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,     5.0,      9999.0},\
     {0x0108,   4,    MemCfg_Datatype_Float,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,     100.0,    20000.0},\
     {0x010A,   4,    MemCfg_Datatype_Float,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,     100.0,    400.0},\
     {0x010C,   4,    MemCfg_Datatype_Float,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,     5.0,      9999.0},\
     {0x010E,   4,    MemCfg_Datatype_Float,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,     5.0,      100.0},\
     {0x0110,   4,    MemCfg_Datatype_Float,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,     1.0,      5.0},\
     {0x0112,   4,    MemCfg_Datatype_Float,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,     1.0,      5.0},\
     {0x0114,   4,    MemCfg_Datatype_Float,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,     10.0,     200.0},\
     {0x0116,   4,    MemCfg_Datatype_Float,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,     0.5,      30.0},\
     {0x0118,   4,    MemCfg_Datatype_Float,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,     10.0,     200.0},\
     {0x011A,   4,    MemCfg_Datatype_Float,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,     1.0,      30.0},\
     {0x011C,   4,    MemCfg_Datatype_Float,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,     0.0,      1.0},\
     {0x011E,   0,    0,                        0,                        0,                       0,    0,     0.0,      0.0}},\
}

// 严重警告参数限制
#define MemSeriousAlarmCheckTable {\
    MemCfg_SeriousAlarm_ItemNum,\
    {{0x0200,   4,    MemCfg_Datatype_Float,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,     100.0,     160.0},\
     {0x0202,   4,    MemCfg_Datatype_Float,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,     100.0,     160.0},\
     {0x0204,   4,    MemCfg_Datatype_Float,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,     0.1,       100.0},\
     {0x0206,   4,    MemCfg_Datatype_Float,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,     100.0,     200.0},\
     {0x0208,   4,    MemCfg_Datatype_Float,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,     0.1,       100.0},\
     {0x020A,   4,    MemCfg_Datatype_Float,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,     100.0,     150.0},\
     {0x020C,   4,    MemCfg_Datatype_Float,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,     0.1,       100.0},\
     {0x020E,   4,    MemCfg_Datatype_Float,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,     100.0,     150.0},\
     {0x0210,   4,    MemCfg_Datatype_Float,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,     0.1,       100.0},\
     {0x0212,   4,    MemCfg_Datatype_Float,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,     0.1,       0.8},\
     {0x0214,   4,    MemCfg_Datatype_Float,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,     0.1,       100.0},\
     {0x0216,   4,    MemCfg_Datatype_Float,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,     100.0,     300.0},\
     {0x0218,   4,    MemCfg_Datatype_Float,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,     0.1,       100.0},\
     {0x021A,   4,    MemCfg_Datatype_Float,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,     100.0,     300.0},\
     {0x021C,   4,    MemCfg_Datatype_Float,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,     0.1,       100.0},\
     {0x021E,   0,    0,                        0,                        0,                       0,    0,     0.0,       0.0}},\
}

// PID调试参数限制
#define MemPidDebugCheckTable {\
    MemCfg_PidDebug_ItemNum,\
    {{0x0300,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     1,    1000,     0.0,     0.0},\
     {0x0301,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     1,    1000,     0.0,     0.0},\
     {0x0302,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     1,    1000,     0.0,     0.0},\
     {0x0303,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     1,    1000,     0.0,     0.0},\
     {0x0304,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     1,    1000,     0.0,     0.0},\
     {0x0305,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     1,    1000,     0.0,     0.0},\
     {0x0306,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     1,    1000,     0.0,     0.0},\
     {0x0307,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     1,    1000,     0.0,     0.0},\
     {0x0308,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     1,    1000,     0.0,     0.0},\
     {0x0309,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,    1,    1000,     0.0,     0.0},\
     {0x030A,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,    1,    1000,     0.0,     0.0},\
     {0x030B,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     1,    1000,     0.0,     0.0},\
     {0x030C,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     1,    1000,     0.0,     0.0},\
     {0x030D,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     1,    1000,     0.0,     0.0},\
     {0x030E,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     1,    1000,     0.0,     0.0},\
     {0x030F,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     1,    1000,     0.0,     0.0},\
     {0x0310,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     1,    1000,     0.0,     0.0},\
     {0x0311,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     1,    1000,     0.0,     0.0},\
     {0x0312,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     1,    1000,     0.0,     0.0},\
     {0x0313,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     1,    1000,     0.0,     0.0},\
     {0x0314,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     1,    1000,     0.0,     0.0},\
     {0x0315,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     1,    1000,     0.0,     0.0},\
     {0x0316,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     1,    1000,     0.0,     0.0},\
     {0x0317,   0,    0,                          0,                        0,                       0,    0,        0.0,     0.0}},\
}

// 电机和开关控制参数限制
#define MemMotorSwitchCheckTable {\
    MemCfg_MotorSwitch_ItemNum,\
    {{0x0400,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     100,  200,     0.0,     0.0},\
     {0x0401,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,       8.0,     20.0},\
     {0x0403,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     1,    100,     0.0,     0.0},\
     {0x0404,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,    1,    100,     0.0,     0.0},\
     {0x0405,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,    1,    100,     0.0,     0.0},\
     {0x0406,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     1,    100,     0.0,     0.0},\
     {0x0407,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     1,    100,     0.0,     0.0},\
     {0x0408,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     1,    100,     0.0,     0.0},\
     {0x0409,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     1,    100,     0.0,     0.0},\
     {0x040A,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,    1,    100,     0.0,     0.0},\
     {0x040B,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     5,    30,      0.0,     0.0},\
     {0x040C,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     5,    30,      0.0,     0.0},\
     {0x040D,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,    5,    30,      0.0,     0.0},\
     {0x040E,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     5,    30,      0.0,     0.0},\
     {0x040F,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     5,    30,      0.0,     0.0},\
     {0x0410,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,    5,    30,      0.0,     0.0},\
     {0x0411,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     5,    30,      0.0,     0.0},\
     {0x0412,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     5,    30,      0.0,     0.0},\
     {0x0413,   0,    0,                          0,                        0,                       0,    0,       0.0,     0.0}},\
}

// 合闸前/后参数限制
#define MemF_BackClosingCheckTable {\
    MemCfg_F_BackClosing_ItemNum,\
    {{0x0500,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     1,  100,     0.0,     0.0},\
     {0x0501,   0,    0,                          0,                        0,                       0,  0,       0.0,     0.0}},\
}

// 建压测试参数限制
#define MemEstaMagnCheckTable {\
    MemCfg_EstaMagn_ItemNum,\
    {{0x0600,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,      10.0,    50.0},\
     {0x0602,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     2,    20,     0.0,     0.0},\
     {0x0603,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,      3.0,     30.0},\
     {0x0605,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,      0.1,     2.0},\
     {0x0607,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     300,  1000,   0.0,     0.0},\
     {0x0608,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,      1.0,     5.0},\
     {0x060A,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     20,   100,    0.0,     0.0},\
     {0x060B,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,      1.0,     30.0},\
     {0x060D,   0,    0,                          0,                        0,                       0,    0,      0.0,     0.0}},\
}

// 波动率测试参数限制
#define MemVolatilityCheckTable {\
    MemCfg_Volatility_ItemNum,\
    {{0x0700,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,      30.0,    70.0},\
     {0x0702,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     3,    30,     0.0,     0.0},\
     {0x0703,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     3,    20,     0.0,     0.0},\
     {0x0704,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     20,   60,     0.0,     0.0},\
     {0x0705,   0,    0,                          0,                        0,                       0,    0,      0.0,     0.0}},\
}

// 极限励磁测试参数限制
#define MemCeilingExciCheckTable {\
    MemCfg_CeilingExci_ItemNum,\
    {{0x0800,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,      30.0,    70.0},\
     {0x0802,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     3,    30,     0.0,     0.0},\
     {0x0803,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     3,    20,     0.0,     0.0},\
     {0x0804,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     2,    60,     0.0,     0.0},\
     {0x0805,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,      50.0,    250.0},\
     {0x0807,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,      50.0,    200.0},\
     {0x0809,   0,    0,                          0,                        0,                       0,    0,      0.0,     0.0}},\
}

// 低频保护测试参数限制
#define MemUnderFreqCheckTable {\
    MemCfg_UnderFreq_ItemNum,\
    {{0x0900,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,      30.0,    70.0},\
     {0x0902,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     3,    30,     0.0,     0.0},\
     {0x0903,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     3,    20,     0.0,     0.0},\
     {0x0904,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,      0.0,     10.0},\
     {0x0906,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     10,   20,     0.0,     0.0},\
     {0x0907,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     10,   20,     0.0,     0.0},\
     {0x0908,   0,    0,                          0,                        0,                       0,    0,      0.0,     0.0}},\
}

// 启停测试参数限制
#define MemStartStopCheckTable {\
    MemCfg_StartStop_ItemNum,\
    {{0x0A00,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,      0.0,     60.0},\
     {0x0A02,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    20,     0.0,     0.0},\
     {0x0A03,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,      30.0,    70.0},\
     {0x0A05,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     5,    30,     0.0,     0.0},\
     {0x0A06,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     5,    20,     0.0,     0.0},\
     {0x0A07,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,      0.0,     60.0},\
     {0x0A09,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     10,   20,     0.0,     0.0},\
     {0x0A0A,   0,    0,                          0,                        0,                       0,    0,      0.0,     0.0}},\
}

// 同步合闸参数限制
#define MemSyncClosingCheckTable {\
    MemCfg_SyncClosing_ItemNum,\
    {{0x0B00,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,      1.0,     5.0},\
     {0x0B02,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,      1.0,     3.0},\
     {0x0B04,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,      1.0,     3.0},\
     {0x0B06,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,      0.5,     2.0},\
     {0x0B08,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,      0.1,     0.3},\
     {0x0B0A,   0,    0,                          0,                        0,                       0,    0,      0.0,     0.0}},\
}

// 100%功率整定测试参数限制
#define MemP100_UploadCheckTable {\
    MemCfg_P100Upload_ItemNum,\
    {{0x0C00,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,      30.0,    70.0},\
     {0x0C02,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     3,    30,     0.0,     0.0},\
     {0x0C03,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,      0.0,     150.0},\
     {0x0C05,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,      0.0,     150.0},\
     {0x0C07,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,      0.3,     1.0},\
     {0x0C09,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,      50.0,    250.0},\
     {0x0C0B,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,      50.0,    250.0},\
     {0x0C0D,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     3,    20,     0.0,     0.0},\
     {0x0C0E,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     20,   40,     0.0,     0.0},\
     {0x0C0F,   0,    0,                          0,                        0,                       0,    0,      0.0,     0.0}},\
}

// 60%功率整定测试参数限制
#define MemP60_UploadCheckTable {\
    MemCfg_P60Upload_ItemNum,\
    {{0x0D00,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,      30.0,    70.0},\
     {0x0D02,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     3,    30,     0.0,     0.0},\
     {0x0D03,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,      0.0,     150.0},\
     {0x0D05,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,      0.0,     150.0},\
     {0x0D07,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,      0.3,     1.0},\
     {0x0D09,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,      50.0,    250.0},\
     {0x0D0B,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,      50.0,    250.0},\
     {0x0D0D,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     3,    20,     0.0,     0.0},\
     {0x0D0E,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     20,   40,     0.0,     0.0},\
     {0x0D0F,   0,    0,                          0,                        0,                       0,    0,      0.0,     0.0}},\
}

// 60%电流整定测试参数限制
#define MemC60_UploadCheckTable {\
    MemCfg_C60Upload_ItemNum,\
    {{0x0E00,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,      30.0,    70.0},\
     {0x0E02,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     3,    30,     0.0,     0.0},\
     {0x0E03,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,      0.0,     150.0},\
     {0x0E05,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,      0.0,     150.0},\
     {0x0E07,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,      0.3,     1.0},\
     {0x0E09,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,      50.0,    250.0},\
     {0x0E0B,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     0,    0,      50.0,    250.0},\
     {0x0E0D,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     3,    20,     0.0,     0.0},\
     {0x0E0E,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     20,   40,     0.0,     0.0},\
     {0x0E0F,   0,    0,                          0,                        0,                       0,    0,      0.0,     0.0}},\
}

// 突卸测试参数限制
#define MemSuddenUnloadCheckTable {\
    MemCfg_SuddenUnload_ItemNum,\
    {{0x0F00,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     3,    20,     0.0,     0.0},\
     {0x0F01,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,     10,   20,     0.0,     0.0},\
     {0x0F02,   0,    0,                          0,                        0,                       0,    0,      0.0,     0.0}},\
}

// 校准系数参数限制
#define MemCaliFactorCheckTable {\
    MemCfg_CliaFactor_ItemNum,\
    {{0x1000,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,     0,   0,     0.0,     0.0},\
     {0x1001,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,     0,   0,     0.0,     0.0},\
     {0x1002,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,     0,   0,     0.0,     0.0},\
     {0x1003,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,     0,   0,     0.0,     0.0},\
     {0x1004,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,     0,   0,     0.0,     0.0},\
     {0x1005,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,     0,   0,     0.0,     0.0},\
     {0x1006,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,     0,   0,     0.0,     0.0},\
     {0x1007,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,     0,   0,     0.0,     0.0},\
     {0x1008,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,     0,   0,     0.0,     0.0},\
     {0x1009,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,     0,   0,     0.0,     0.0},\
     {0x100A,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,     0,   0,     0.0,     0.0},\
     {0x100B,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,     0,   0,     0.0,     0.0},\
     {0x100C,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,     0,   0,     0.0,     0.0},\
     {0x100D,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,     0,   0,     0.0,     0.0},\
     {0x100E,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,     0,   0,     0.0,     0.0},\
     {0x100F,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,     0,   0,     0.0,     0.0},\
     {0x1010,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,     0,   0,     0.0,     0.0},\
     {0x1011,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,     0,   0,     0.0,     0.0},\
     {0x1012,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,     0,   0,     0.0,     0.0},\
     {0x1013,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,     0,   0,     0.0,     0.0},\
     {0x1014,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,     0,   0,     0.0,     0.0},\
     {0x1015,   0,    0,                          0,                        0,                        0,   0,     0.0,     0.0}},\
}

// 负载机配置参数限制
#define MemLoadEquCfgTable {\
    MemCfg_LoadEquCfg_ItemNum,\
    {{0x1100,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,      0,   0,     0.0,     100.0},\
     {0x1102,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,      0,   0,     0.0,     100.0},\
     {0x1104,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,      0,   0,     0.0,     100.0},\
     {0x1106,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,      0,   0,     0.0,     100.0},\
     {0x1108,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,      0,   0,     0.0,     100.0},\
     {0x110A,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,      0,   0,     0.0,     100.0},\
     {0x110C,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,     0,   0,     0.0,     0.0},\
     {0x110D,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,      0,   1,     0.0,     0.0},\
     {0x110E,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_ON,      0,   100,   0.0,     0.0},\
     {0x110F,   4,    MemCfg_Datatype_Float,      MemCfg_Permission_RW,     MemCfg_RangLimit_ON,      0,   0,     0.0,     100.0},\
     {0x1111,   0,    0,                          0,                        0,                        0,   0,     0.0,     0.0}},\
}

// 设备控制数据限制
#define MemDeviceControlCheckTable {\
    MemTmp_DeviceControl_ItemNum,\
    {{0x0000,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,     0,    0,     0.0,     0.0},\
     {0x0001,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,     0,    0,     0.0,     0.0},\
     {0x0002,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,     0,    0,     0.0,     0.0},\
     {0x0003,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,     0,    0,     0.0,     0.0},\
     {0x0004,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,     0,    0,     0.0,     0.0},\
     {0x0005,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,     0,    0,     0.0,     0.0},\
     {0x0006,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,     0,    0,     0.0,     0.0},\
     {0x0007,   2,    MemCfg_DataType_Integer,    MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,     0,    0,     0.0,     0.0},\
     {0x0008,   0,    0,                          0,                        0,                        0,    0,     0.0,     0.0}},\
}

#define MemProcParameterCheckTable {\
    MemTmp_ProcParameter_ItemNum,\
    {{0x0100,   4,     MemCfg_DataType_Integer,   MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,     0,    0,     0.0,     0.0},\
     {0x0102,   16,    MemCfg_Datatype_String,    MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,     0,    0,     0.0,     0.0},\
     {0x010A,   20,    MemCfg_Datatype_String,    MemCfg_Permission_RW,     MemCfg_RangLimit_OFF,     0,    0,     0.0,     0.0},\
     {0x0114,   2,     MemCfg_DataType_Integer,   MemCfg_Permission_R,      MemCfg_RangLimit_OFF,     0,    0,     0.0,     0.0},\
     {0x0115,   2,     MemCfg_DataType_Integer,   MemCfg_Permission_R,      MemCfg_RangLimit_OFF,     0,    0,     0.0,     0.0},\
     {0x0116,   0,    0,                          0,                        0,                        0,    0,     0.0,     0.0}},\
}

// EEprom配置参数页面使用长度
#define Memory_CfgPageLength {\
    sizeof(share_parameterCfgData_st.baseData_st),\
    sizeof(share_parameterCfgData_st.nominalCfg_st),\
    sizeof(share_parameterCfgData_st.seriousAlarmCfg_st),\
    sizeof(share_parameterCfgData_st.pidDebugCfg_st),\
    sizeof(share_parameterCfgData_st.motorSwitchCfg_st),\
    sizeof(share_parameterCfgData_st.f_BackClosingCfg_st),\
    sizeof(share_parameterCfgData_st.estaMagnCfg_st),\
    sizeof(share_parameterCfgData_st.volatilityCfg_st),\
    sizeof(share_parameterCfgData_st.ceilingExciCfg_st),\
    sizeof(share_parameterCfgData_st.underFreqCfg_st),\
    sizeof(share_parameterCfgData_st.startStopCfg_st),\
    sizeof(share_parameterCfgData_st.syncClosingCfg_st),\
    sizeof(share_parameterCfgData_st.P100_uploadCfg_st),\
    sizeof(share_parameterCfgData_st.P60_uploadCfg_st),\
    sizeof(share_parameterCfgData_st.C60_uploadCfg_st),\
    sizeof(share_parameterCfgData_st.suddenUnloadCfg_st),\
    sizeof(share_parameterCfgData_st.calibrationFactor_st),\
    sizeof(share_parameterCfgData_st.loadEquConfig_st),\
    0,\
    0,\
    0,\
    0,\
    0,\
    0,\
    0,\
    0,\
    0,\
    0,\
    0,\
    0,\
    0,\
    0,\
}

#ifdef __cplusplus
}
#endif
#endif   /*   __MEMORY_CFG_H__   */